package com.ruoyi.home.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.home.mapper.HomepageTemplateMapper;
import com.ruoyi.home.domain.HomepageTemplate;
import com.ruoyi.home.service.IHomepageTemplateService;

/**
 * 首页模板Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-01-20
 */
@Service
public class HomepageTemplateServiceImpl implements IHomepageTemplateService 
{
    @Autowired
    private HomepageTemplateMapper homepageTemplateMapper;

    /**
     * 查询首页模板
     * 
     * @param id 首页模板主键
     * @return 首页模板
     */
    @Override
    public HomepageTemplate selectHomepageTemplateById(Long id)
    {
        return homepageTemplateMapper.selectHomepageTemplateById(id);
    }

    /**
     * 查询首页模板列表
     * 
     * @param homepageTemplate 首页模板
     * @return 首页模板
     */
    @Override
    public List<HomepageTemplate> selectHomepageTemplateList(HomepageTemplate homepageTemplate)
    {
        return homepageTemplateMapper.selectHomepageTemplateList(homepageTemplate);
    }

    /**
     * 新增首页模板
     * 
     * @param homepageTemplate 首页模板
     * @return 结果
     */
    @Override
    public int insertHomepageTemplate(HomepageTemplate homepageTemplate)
    {
        homepageTemplate.setCreateTime(DateUtils.getNowDate());
        homepageTemplate.setCreateBy(SecurityUtils.getUsername());
        return homepageTemplateMapper.insertHomepageTemplate(homepageTemplate);
    }

    /**
     * 修改首页模板
     * 
     * @param homepageTemplate 首页模板
     * @return 结果
     */
    @Override
    public int updateHomepageTemplate(HomepageTemplate homepageTemplate)
    {
        homepageTemplate.setUpdateTime(DateUtils.getNowDate());
        homepageTemplate.setUpdateBy(SecurityUtils.getUsername());
        return homepageTemplateMapper.updateHomepageTemplate(homepageTemplate);
    }

    /**
     * 批量删除首页模板
     * 
     * @param ids 需要删除的首页模板主键
     * @return 结果
     */
    @Override
    public int deleteHomepageTemplateByIds(Long[] ids)
    {
        return homepageTemplateMapper.deleteHomepageTemplateByIds(ids);
    }

    /**
     * 删除首页模板信息
     * 
     * @param id 首页模板主键
     * @return 结果
     */
    @Override
    public int deleteHomepageTemplateById(Long id)
    {
        return homepageTemplateMapper.deleteHomepageTemplateById(id);
    }

    /**
     * 查询指定校区的启用模板
     * 
     * @param campusId 校区ID
     * @return 首页模板
     */
    @Override
    public HomepageTemplate selectActiveTemplateByCampusId(Long campusId)
    {
        return homepageTemplateMapper.selectActiveTemplateByCampusId(campusId);
    }

    /**
     * 激活模板（同时取消同校区其他模板的激活状态）
     * 
     * @param id 模板ID
     * @param campusId 校区ID
     * @return 结果
     */
    @Override
    public int activateTemplate(Long id, Long campusId)
    {
        // 先取消其他模板的激活状态
        homepageTemplateMapper.deactivateOtherTemplates(campusId, id);
        
        // 激活当前模板
        HomepageTemplate template = new HomepageTemplate();
        template.setId(id);
        template.setIsActive(1);
        template.setUpdateTime(DateUtils.getNowDate());
        template.setUpdateBy(SecurityUtils.getUsername());
        
        return homepageTemplateMapper.updateHomepageTemplate(template);
    }

    /**
     * 复制模板
     * 
     * @param id 原模板ID
     * @param templateName 新模板名称
     * @return 结果
     */
    @Override
    public int copyTemplate(Long id, String templateName)
    {
        HomepageTemplate originalTemplate = homepageTemplateMapper.selectHomepageTemplateById(id);
        if (originalTemplate == null) {
            return 0;
        }
        
        HomepageTemplate newTemplate = new HomepageTemplate();
        newTemplate.setTemplateName(templateName);
        newTemplate.setTemplateDesc(originalTemplate.getTemplateDesc() + " (复制)");
        newTemplate.setCampusId(originalTemplate.getCampusId());
        newTemplate.setTemplateData(originalTemplate.getTemplateData());
        newTemplate.setIsActive(0); // 复制的模板默认不激活
        newTemplate.setCreateTime(DateUtils.getNowDate());
        newTemplate.setCreateBy(SecurityUtils.getUsername());
        
        return homepageTemplateMapper.insertHomepageTemplate(newTemplate);
    }
} 